package dlwntk6545.swing.outline;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;

/*
		
		배치 관리자 Layout Manager
		JFrame, JDialog 같은 컨테이너에 하위 컴퍼넌트(button, label, JPanael 등)를 
		배치 하려면 LayoutManager 를 이용해야 함
		LayoutManager 를 컨테이너에 추가하려면 setLayout 메서드를 이용
		또한, LayoutManager 에게 컴퍼넌트의 적절한 크기를 알려주려면 
		setPreferredSize 메서드를 사용
		button.setPreferredSize(new Dimension(150, 150));
		
		LayoutManager 는 인터페이스임
		하지만, 특별한 경우를 제외하고 이것을 구현할 필요는 없음
		LayoutManager <- FlowLayout, BorderLayout, CardLayout, 
						 GridLayout, GredBagLayout, BoxLayout, SpringLayout
						 
		BoxLayout, SpringLayout 등은 javax.swing 패키지에 포함됨
		
		FlowLayout
		컴퍼넌트들을 수평방향으로 배치함 기본흐름 방향은 왼쪽에서 오른쪽행 
		먼저 추가한 컴퍼넌트는 나중에 추가한 컴퍼넌트의 왼쪽에 놓임
		
		수평 행 정렬은 LEFT, RIGHT, CENTER, LEADING, TRAILING 등이 있음
		hgap, vgap 는 각 컴퍼넌트들간의 수평 간격, 수직 간격을 정의한 것임
		
 */

public class J12_FlowLayoutFrame extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J12_FlowLayoutFrame frame = new J12_FlowLayoutFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J12_FlowLayoutFrame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		
		JButton btnNewButton_2 = new JButton("New button");
		contentPane.add(btnNewButton_2);
		
		JButton btnNewButton_1 = new JButton("New button");
		contentPane.add(btnNewButton_1);
		
		JButton btnNewButton = new JButton("New button");
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_3 = new JButton("New button");
		contentPane.add(btnNewButton_3);
		
		JButton btnNewButton_4 = new JButton("New button");
		contentPane.add(btnNewButton_4);
		
		JButton btnNewButton_5 = new JButton("New button");
		contentPane.add(btnNewButton_5);
		
		JButton btnNewButton_6 = new JButton("New button");
		contentPane.add(btnNewButton_6);
	}

}
